import process from 'node:process'
import path from 'node:path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import { FileSystemIconLoader } from 'unplugin-icons/loaders'
import { URL, fileURLToPath } from 'node:url'

const localIconPath = path.join(process.cwd(), 'src/assets/svg-icon')

// https://vite.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  plugins: [
    vue(),
    // 下面这个是自动导入组件的
    Components({
      resolvers: [
        // ant design vue UI 库的
        AntDesignVueResolver({
          importStyle: false // css in js
        }),
        IconsResolver({
          prefix: 'icon', // 自动引入的Icon组件统一前缀，默认为 i，设置false为不需要前缀
          // {prefix}-{collection}-{icon} 使用组件解析器时，您必须遵循名称转换才能正确推断图标。
          // alias: { park: 'icon-park' } 集合的别名
          // enabledCollections: ['ep'] // 这是可选的，默认启用 Iconify 支持的所有集合['mdi']
          customCollections: ['local-icon']
        })
      ],
      dts: 'src/typings/components.d.ts' // 自定义输出类型声明文件的 路径
    }),
    Icons({
      // scale: 1, // 缩放
      compiler: 'vue3', // 编译方式
      // defaultClass: '', // 默认类名
      // defaultStyle: '', // 默认样式
      autoInstall: true,
      // jsx: 'react' // jsx支持
      customCollections: {
        'local-icon': FileSystemIconLoader(localIconPath, (svg) =>
          svg.replace(
            /^<svg\s/,
            '<svg width="1em" height="1em" class="dida-icon"'
          )
        )
      }
    })
  ]
})
